import type { PiniaPluginContext } from 'pinia';
/**
 * 持久化存储插件
 * 有几个模块初始化时执行几次
 * @param context
 */
export function persistedstste(context: PiniaPluginContext) {
    //根据模块名拿到对应的localStorage
    const currentState = JSON.parse(localStorage.getItem(context.store.$id) || "{}");
    //将数据放到pinia对应的模块里面
    context.store.$patch(currentState)
    /**
     * 每次state发生变化的时候
     * 都要把它保存在localStorage里面
     *
     * 两个参数
     * 第一个是当前修改store的上下文
     * 第二个是当前修改的状态
     */
    context.store.$subscribe((_storem, state) => {
        console.log(_storem)
        localStorage.setItem(_storem.storeId, JSON.stringify(state))
    }, {
        //组件卸载依赖还在
        detached: true
    })
    context.store.$removePersistedState = () => {
        const moduleId = context.store.$id;
        localStorage.removeItem(moduleId);
    };
}